<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Discuz! 用户使用说明书 - 高级应用</title><link rel="stylesheet" href="discuz_guide.css">
<base target="_blank">
</head>

<body leftmargin="0" rightmargin="0" topmargin="0">
<script language="JavaScript" src="header.js"></script>

<table width="100%" cellpadding="0" cellspacing="0" border="0">

<tr><td class="title">本栏目下相关链接</td></tr>
<tr><td><br /><ul><script language="JavaScript" src="advanced.js"></script></ul><br /></td></tr>

<tr><td class="title">防御 CC 攻击说明<a name="title"></a></td></tr>
<tr><td><br />

<p class="subtitle">CC 攻击简介

<p>
CC 攻击的前身是 DDOS 攻击（分布式拒绝攻击）。
DDOS 攻击的原理针对 TCP/IP 协议的缺陷，也不能算是缺陷，只是当时设计该协议时是在几十年前，设计者假定大家都是遵守游戏规则的良好公民，现在联网环境比当时要复杂得多，但是仍在使用以前的协议，所以才会带来某些问题。
两台机器通信要进行一个所谓的三次握手，首先是客户机发出一个请求 （SYN） ，服务器收到该请求后，填写会话信息表 （TCB，保存在内存中），并且向客户机反馈一个回应包 （SYN-ACK） ，此时连接处于 TIME_WAIT 状态，如果最终没有收到客户机的 ACK 信息包，会尝试隔一段时间再发送一次回应包 SYN-ACK，这样经过多次重试后，客户机还没有回应的话，服务器才会关闭会话，并从 TCB 中删除掉该会话。这个等待过程大约为 30 秒。
当攻击者同时发起十万计的请求时 （SYN） 到服务器开放的端口，并且本身拒绝发送 SYN-ACK 回应时，服务器的的 TCB 将会很快超过负荷，并且攻击者可以伪造包中的源 IP 地址，这样攻击者还不会被服务器返回的包堵住。可以看出这是 TCP/IP 协议中一个相当严重的问题。
通过防火墙策略审核过滤数据包，可以从一定程度上防止 DDOS 攻击。

<p>
CC 攻击跟 DDOS 攻击本质上是一样的，都是以消耗服务器资源为目的，目前看来，它主要针对 WEB 应用程序比较消耗资源的地方进行疯狂请求，比如，论坛中的搜索功能，如果不加以限制，任由人搜索，普通配置的服务器在几百个并发请求下，MYSQL 服务就挂掉了。

<p>
CC攻击的种类有三种，直接攻击，代理攻击，僵尸网络攻击，直接攻击主要针对有重要缺陷的 WEB 应用程序，一般说来是程序写的有问题的时候才会出现这种情况，比较少见。僵尸网络攻击有点类似于 DDOS 攻击了，从 WEB 应用程序层面上已经无法防御，所以这两种情况我们不进行深入的探讨，这里要主要讨论第二种，代理攻击，CC 攻击者一般会操作一批代理服务器，比方说 100 个代理，然后每个代理同时发出 10 个请求，这样 WEB 服务器同时收到 1000 个并发请求的，并且在发出请求后，立刻断掉与代理的连接，避免代理返回的数据将本身的带宽堵死，而不能发动再次请求，这时 WEB 服务器会将响应这些请求的进程进行队列，数据库服务器也同样如此，这样一来，正常请求将会被排在很后被处理，就象本来你去食堂吃饭时，一般只有不到十个人在排队，今天前面却插了一千个人，那么轮到你的机会就很小很小了，这时就出现页面打开极其缓慢或者白屏。

<p class="subtitle">防御 CC 攻击

<p>
Discuz!5.5 在以往抗 CC 的基础上又加了两种方法，可以根据实际遭受攻击的情况，通过配置组合出适合的抵抗方法。
限于篇幅，不详细阐述对抗原理，现将配置方法做下简要说明。<br />
配置文件 config.inc.php

<br /><br /><table width="80%" cellpadding="0" cellspacing="0" border="0" class="code">
<tr><td><pre>

	$attackevasive = 0;		// 论坛防御级别，可防止大量的非正常请求造成的拒绝服务攻击
					// 防护大量正常请求造成的拒绝服务攻击,
					// 0=关闭, 1=cookie 刷新限制, 2=限制代理访问, 4=二次请求, 8=回答问题（第一次访问时需要回答问题）
					// 组合为: 1|2, 1|4, 2|8, 1|2|4...
</pre></td></tr></table>

<p>
正常情况下设置为 0，在遭到攻击时，分析其攻击手法和规律，组合使用。<br />
可以尝试先设置为 2， 2|4， 1|2|4|， 1|2|4|8， 如果 1|2|4|8 还不行，我们认为应用程序层面上已经抵挡不住，可能主机遭受的攻击来自于僵尸网络的 DDOS 攻击了，我们建议您从防火墙策略上入手。

<script language="JavaScript" src="footer.js"></script>
</body>
</html>
